﻿using System;

#if WINDOWS

using System.Drawing.Design;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

#endif

using System.Xml.Serialization;
using FITClub.Util;
using System.IO;

namespace FITClub.Episode1.Levels
{
#if WINDOWS

    [Serializable]
#endif
    public abstract class AVisibleComponentConfig : ITransformable
    {
#if WINDOWS

        [Category("Path")]
        [Editor(typeof(ContentPathEditor), typeof(UITypeEditor))]
        [EditorBrowsable(EditorBrowsableState.Always)]
#endif
        [XmlAttribute]
        public string ModelPath { get; set; }

#if WINDOWS

        [TypeConverter(typeof(ExpandableObjectConverter))]
#endif
        public MatrixTransforms Transforms { get; set; }

        public override string ToString()
        {
            return string.Format("{0} [{1};{2};{3}] {4}", this.GetType().Name, this.Transforms.Translation.X, this.Transforms.Translation.Y, this.Transforms.Translation.Z, this.ModelPath);
        }

#if WINDOWS

        public abstract object Clone();

#endif
    }
}